package com.banyou.banyou.webutils;



import com.banyou.banyou.bean.BaseBean;
import com.banyou.banyou.bean.CodeBean;
import com.banyou.banyou.bean.journey.JourneyBean;
import com.banyou.banyou.bean.journey.info.UserOrderInfoBean;
import com.banyou.banyou.bean.journey.query.TourBean;
import com.banyou.banyou.bean.journey.tourinfo.TourInfoBean;
import com.banyou.banyou.bean.login.login.LoginBean;
import com.banyou.banyou.bean.main.info.AccompingInfoBean;
import com.banyou.banyou.bean.main.my.MyRecord;
import com.banyou.banyou.bean.main.setting.UserInfoBean;
import com.banyou.banyou.bean.main.search.SearchListBean;
import com.banyou.banyou.bean.order.CreateOrderBean;
import com.banyou.banyou.bean.order.EvaluateHistoryBean;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import rx.Observable;

/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 项目名称：WheelMedical
 * 包名:com.yyxk.wheelmedical.webutils
 * 类描述：
 * 创建人：Random
 * 创建时间：11:20
 * 修改人：Random
 * 修改时间：11:20
 * 修改备注：
 */
public interface ResponseCallBack {
    @POST("/report/saveReportSound.json")
    Observable<ResponseBody> upload(@Body MultipartBody body);

    /**
     * 获取手机验证码接口
     * @param phoneNum
     * @return
     */
    @GET("/user/getPhoneVerifyCode")
    Observable<BaseBean<CodeBean>> getCode(@Query("billId") String phoneNum);

    /**
     * 注册接口
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/user/registerUser")
    Observable<BaseBean<CodeBean>> regist(@FieldMap()  Map<String,String> map);
//    Observable<BaseBean<CodeBean>> regist(@Field("billId") String phone,@Field("password") String password);
    /**
     * 登录接口
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/user/login")
    Observable<BaseBean<LoginBean>> login(@Field("billId") String phone, @Field("password") String password);

    /**
     * 找回密码接口
     * @param phone
     * @param password
     * @return
     */
    @GET("user/findUserPassword")
    Observable<BaseBean<CodeBean>> forget(@Query("billId") String phone,@Query("randomCode") String password);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    @GET("/user/fetchTourInfo/{userId}")
    Observable<BaseBean<UserInfoBean>> getUserInfo(@Path("userId") String userId);
//
//    /**
//     * 伴游提现
//     * @param userId
//     * @param cny
//     * @return
//     */
//    @GET("/guideApplyMoney/{userId}/{cny}")
//    Observable<BaseBean<CodeBean>> getMoney(@Path("userId") String userId,@Path("cny") String cny);

    /**
     * 设置游客信息
     * @return
     */
    @FormUrlEncoded
    @POST("/user/setTourInfo")
    Observable<BaseBean<CodeBean>> sendSetting(@Field("requestInfo") String json);

    /**
     * 游客登录之后，首页默认展示信用等级排名前5的伴游信息列表（审核通过之后的伴游）分页展示
     * @param map
     * @return
     */
    @GET("/user/getSysUserByUserType")
    Observable<BaseBean<List<SearchListBean>>> getSearchInitList(@QueryMap Map<String,String> map);

    /**
     * 查询伴游
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/user/querySysUserByParam")
    Observable<BaseBean<List<SearchListBean>>> getSearchList(@FieldMap Map<String,String> map);

    /**
     * 点击某一个伴游展示伴游部分信息
     * @param userId
     * @return
     */
    @GET("user/getAccompanyInfo/{userId}")
    Observable<BaseBean<AccompingInfoBean>> getAccompanyInfo(@Path("userId") String userId);

    /**
     * 创建订单接口
     * @param json
     * @return
     */
    @FormUrlEncoded
    @POST("/order/createSysOrder")
    Observable<BaseBean<CreateOrderBean>> createSysOrder(@Field("requestInfo") String json);

    /**
     * 支付接口
     * @param json
     * @return
     */
    @FormUrlEncoded
    @POST("order/paySysOrder")
    Observable<BaseBean<CodeBean>> payOrder(@Field("requestInfo") String json);

    /**
     * 行程单列表接口
     * @param map
     * @return
     */
    @GET("/order/querySysOrderByBillId")
    Observable<BaseBean<List<JourneyBean>>> queryOrder(@QueryMap Map<String,String> map);

    /**
     * 根据时间查询订行程单
     * @param
     * @return
     */
    @GET("/order/findTourOrderList")
    Observable<BaseBean<List<TourBean>>> queryOrderByTime(@QueryMap Map<String,String> map);

    /**
     * 订单详情
     * @param orderId
     * @return
     */
    @GET("/order/findOrderDetailInfo/{orderId}")
    Observable<BaseBean<UserOrderInfoBean>> orderInfo(@Path("orderId") String orderId);

    /**
     * 结束订单
     * @param orderId
     * @return
     */
    @GET("/order/finishSysOrder/{orderId}/{orderType}")
    Observable<BaseBean<CodeBean>> finishOrderId(@Path("orderId") String orderId,@Path("orderType") String orderType);

    /**
     * 发送评价
     */
    @GET("/order/orderUserScore/{orderId}/{score}/{str}")
    Observable<BaseBean<CodeBean>> orderUserScore(@Path("orderId") String orderId,@Path("score") String score,@Path("str") String str);

    /**
     * 接单
     * @param orderId
     * @return
     */
    @GET("/order/takeOrder/{orderId}")
    Observable<BaseBean<CodeBean>> takeOrder(@Path("orderId") String orderId);

    /**
     * 伴游查询行程单详情
     * @param orderId
     * @return
     */
    @GET("/order/getSysOrderDetailInfo/{orderId}")
    Observable<BaseBean<TourInfoBean>> getOrderDetail(@Path("orderId") String orderId);

    /**
     * 伴游评价游客
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/commentSysOrder")
    Observable<BaseBean<CodeBean>> comment(@FieldMap Map<String,String> map);

    /**
     * 游客取消未付款订单
     * @param orderId
     * @return
     */
    @GET("/order/cancelSysOrder/{orderId}")
    Observable<BaseBean<CodeBean>> cancleOrder(@Path("orderId") String orderId);

    /**
     * 伴游取消订单
     * @param orderId
     * @return
     */
    @GET("/order/terminalSysOrder/{orderId}")
    Observable<BaseBean<CodeBean>> tourCancleOrder(@Path("orderId") String orderId);

    /**
     * 伴游根据条件查询行程单
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/selectSysOrderByParam")
    Observable<BaseBean<List<JourneyBean>>> queryListByParam(@FieldMap Map<String,String> map);

    /**
     * 提款接口
     * @param userId
     * @param cny
     * @param bankNo
     * @param type
     * @return
     */
    @GET("user/guideApplyMoney/{userId}/{cny}/{outNo}/{bankNo}/{type}")
    Observable<BaseBean<CodeBean>> getMoney(@Path("userId") String userId,@Path("cny") String cny,@Path("outNo") String outNo,@Path("bankNo") String bankNo,@Path("type") String type);

    /**
     * 伴游查询提款记录
     * @param map
     * @return
     */
    @GET("/user/selectSysWithdrawRecord")
    Observable<BaseBean<List<MyRecord>>> getRecord(@QueryMap Map<String,String> map);

    /**
     * 修改密码
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/user/updateSysUserPassword")
    Observable<BaseBean<CodeBean>> changePassword(@FieldMap Map<String,String> map);

    /**
     * 评论历史
     * @param map
     * @return
     */
    @GET("/order/selectSysUserComment")
    Observable<BaseBean<List<EvaluateHistoryBean>>> evaluateHistory(@QueryMap Map<String,String> map);
}
